#include<iostream>
#include<iomanip>
//using namespace std;
//inline double pow(double x) { return x * x * x; };
//
//double find_cube(double x)
//{
//	double ans = 0;
//	double left = -100000, right = 100000;
//	while ((right-left)>1e-8)
//	{
//		double mid = (left+right)/2;
//		if (pow(mid) < x)
//			left = mid;
//		else
//			right = mid;
//	}
//	return right;
//}
//
//int main()
//{
//	double x;
//	cin >> x;
//	double ans = find_cube(x);
//	cout << setiosflags(ios::fixed) << setprecision(6);
//	cout << ans;
//	return 0;
//}
//
//
//#include<iostream>
//#include<iomanip>
//using namespace std;
//double n, l, r, mid;
//bool flag;
//double q(double a) { return a * a * a; }
//int main() {
//	cin >> n;
//	l = -10000, r = 10000;
//	while (r - l >= 1e-7) {
//		mid = (l + r) / 2;
//		if (q(mid) >= n) r = mid;
//		else l = mid;
//	}
//	cout << fixed << setprecision(6) << l;
//	return 0;
//}


#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

double find_cube(double x)
{
	double ans = 0;
	double left = -100000, right = 100000;
	while (left < right)
	{
		double mid = (left + right) / 2;
		if (abs(pow(mid, 3) - x) < 1e-8)
			return mid;
		else if (pow(mid, 3) < x)
			left = mid;
		else if (pow(mid, 3) > x)
			right = mid;
	}
}

int main()
{
	double x;
	cin >> x;
	double ans = find_cube(x);
	cout << setiosflags(ios::fixed) << setprecision(6);
	cout << ans;
	return 0;
}